package com.example.development.androidmsample.adapter; import android.content.Context; import android.graphics.Color; import android.support.v4.view.MotionEventCompat; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.example.development.androidmsample.R; import com.example.development.androidmsample.utils.helper.ItemTouchHelperAdapter; import com.example.development.androidmsample.utils.helper.ItemTouchHelperViewHolder; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; public class SampleAdapter extends RecyclerView.Adapter<SampleAdapter.ViewHolder> implements ItemTouchHelperAdapter { private List<String> mValues= new ArrayList<>(); private List<Integer> mDrawables = new ArrayList<>(); private final OnStartDragListener mDragStartListener; public interface OnStartDragListener { void onStartDrag(RecyclerView.ViewHolder viewHolder); } @Override public void onItemDismiss(int position) { mValues.remove(position); mDrawables.remove(position); notifyItemRemoved(position); } @Override public void onItemMove(int fromPosition, int toPosition) { Collections.swap(mValues, fromPosition, toPosition); Collections.swap(mDrawables, fromPosition, toPosition); notifyItemMoved(fromPosition, toPosition); } public SampleAdapter(Context context,OnStartDragListener dragStartListener) { mDragStartListener = dragStartListener; mValues.addAll(Arrays.asList(context.getResources().getStringArray(R.array.superheros))); setDrawables(); } private void setDrawables() { mDrawables.add(0, R.drawable.superman); mDrawables.add(1, R.drawable.batman); mDrawables.add(2, R.drawable.spiderman); mDrawables.add(3, R.drawable.thor); mDrawables.add(4, R.drawable.haljordan); mDrawables.add(5, R.drawable.wonderwoman); mDrawables.add(6, R.drawable.captainamerica); mDrawables.add(7, R.drawable.martinmanhunter); mDrawables.add(8, R.drawable.dickgrayson); mDrawables.add(9, R.drawable.thing); mDrawables.add(10, R.drawable.humantorch); mDrawables.add(11, R.drawable.mrfantatstic); mDrawables.add(12, R.drawable.invisiblewoman); mDrawables.add(13, R.drawable.wallywest); mDrawables.add(14, R.drawable.kylerayner); mDrawables.add(15, R.drawable.superboy); mDrawables.add(16, R.drawable.leonardo); mDrawables.add(17, R.drawable.raphael); mDrawables.add(18, R.drawable.donatello); mDrawables.add(19, R.drawable.michelangelo); mDrawables.add(20, R.drawable.silversurfer); mDrawables.add(21, R.drawable.aquaman); mDrawables.add(22, R.drawable.greenarrow); mDrawables.add(23, R.drawable.barryallen); mDrawables.add(24, R.drawable.timdrake); mDrawables.add(25, R.drawable.supergirl); mDrawables.add(26, R.drawable.ironman); mDrawables.add(27, R.drawable.hercules); mDrawables.add(28, R.drawable.daredevil); mDrawables.add(29, R.drawable.orion); mDrawables.add(30, R.drawable.blackpanther); mDrawables.add(31, R.drawable.wolverine); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.sample_list_item, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(final ViewHolder holder, int position) { holder.mTextView.setText(mValues.get(position)); // Start a drag whenever the handle view it touched holder.mHandleView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) { mDragStartListener.onStartDrag(holder); } return false; } }); Glide.with(holder.mImageView.getContext()) .load(mDrawables.get(position)) .into(holder.mImageView); } public static class ViewHolder extends RecyclerView.ViewHolder implements ItemTouchHelperViewHolder { public final View mView; public final ImageView mImageView; public final ImageView mHandleView; public final TextView mTextView; public ViewHolder(View view) { super(view); mView = view; mImageView = (ImageView) view.findViewById(R.id.avatar); mHandleView = (ImageView) view.findViewById(R.id.handleview); mTextView = (TextView) view.findViewById(R.id.name); } @Override public void onItemSelected() { itemView.setBackgroundColor(Color.LTGRAY); } @Override public void onItemClear() { itemView.setBackgroundColor(0); } @Override public String toString() { return super.toString() + " '" + mTextView.getText(); } } @Override public int getItemCount() { return mValues.size(); } }